<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

    <script>

        var list = [2,4,6,8,10,12];   // new Array
        function fn(item,index){
            console.log(item,index)
        } 

        // for(var i=0;i<list.length;i++){
        //     fn(list[i],i);
        // }

        // Array  构造函数 
        // var list = new Array()
        // 
        // function Array(){
        //     this.forEach = ()=>{}
        // }
        // Array.prototype.map = function(){}
        // Array.prototype.forEach = function(){}

        // list.forEach((l,i)=>{
        //     console.log(l)
        //     console.log(i)
        // })

        // function MyEach(list,fn){
        //     for(var i=0;i<list.length;i++){
        //         fn(list[i],i,list);    // (item,index,array)
        //     }
        // }

        // MyEach(list,fn);

        // 如何判断参数
        // 函数执行时候的参数是  实参
        // 函数定义时候的参数是  形参
        
        // Array
        Array.prototype.myEach = function(fn){
            // this 指向当前的数组 
            for(var i=0;i<this.length;i++){
                var item = this[i];
                var index = i;
                var array = this;
                fn(item,index,array);    // (item,index,array)
            }
        }

        var arr = new Array('a','b','c','d','e');  // this==arr 实例化对象 
        // var arr = ['a','b','c','d','e']   // new Array
        arr.myEach((l,i,list)=>{
            console.log(l,i,list)
        })

        // push  pop unshift shift  splice  map some every filter find  fill flat 

    </script>
</body>
</html>